package com.situ.company.service.Impl.service.Impl;

import com.situ.company.dao.DeptDao;
import com.situ.company.entity.Dept;
import com.situ.company.entity.Employee;
import com.situ.company.entity.User;
import com.situ.company.service.Impl.DeptService;

import com.situ.company.vo.ResultVO;
import com.situ.company.vo.TableVO;

import java.util.List;

public class DeptServiceImpl implements DeptService {

    DeptDao dao =new DeptDao();

    @Override
    public List<Dept> all() {
        return dao.all();
    }
    //展示下拉框所有内容

    @Override
    public ResultVO delete(Integer id) {
        //check
        List<Employee> list = dao.check(id);
        //创建一个返回结果vo 只接受结果和失败信息
        ResultVO vo = new ResultVO();
        if(list.isEmpty()){
            //判断部门是否有人
            dao.delete(id);
        }else {
            vo.setCode(2);
            vo.setMsg("您不能删除此部门！");
        }
        return vo;

    }

    @Override
    public TableVO select(Integer page, Integer limit, String name, String tel) {
        List<Dept> list = dao.select(page,limit,name,tel);
        //根据条件筛选查询，分页

        for (int i = 0; i < list.size(); i++) {
            list.get(i).setNumber(Math.toIntExact(dao.countNumber(list.get(i).getId())));
        }

        //把数据返回给table小工具(响应)
        //获取一个响应的前台写出对象
        //list转完后是[{},{},{}]


        TableVO vo = new TableVO();
        //dao统计一个数，一共都少条数据
        vo.setCount(dao.count(name,tel));
        vo.setData(list);
        //使用json工具把对象转成json格式的字符串
        //fastjson 和 jackson
        //通过jackson工具把list对象转成json 字符串
        return vo;
    }

    @Override
    public void save(Dept d) {
        if(d.getId()==null){
            dao.insert(d);
        }else{
            dao.update(d);
        }

    }

    @Override
    public Dept info(Integer id) {
        List<Dept> list =dao.edit(id);
        if(list.isEmpty()){
            return null;
        }else {
            return list.get(0);
        }
    }

}
